Para este módulo é necessário instalar (install.packages()) e carregar (library()) as seguintes bibliotecas

 

Dados de Área

Taxa de Desemprego

Pretendemos fazer uma visualização espacial dos dados dados_eurostat_M4. Estes dados fornecem informação da taxa de desemprego para um conjunto de países e foram obtidos através do package Eurostat do R.

##   country     time year   cod Females Males Over25_F Over25_M Over25 Total
## 1 Finland 1988.000 1988 Finla     4.1   5.4      2.9      4.2    3.6   4.8
## 2 Finland 1988.083 1988 Finla     4.0   5.1      2.8      3.9    3.4   4.6
## 3 Finland 1988.167 1988 Finla     3.9   4.9      2.8      3.7    3.2   4.5
## 4 Finland 1988.250 1988 Finla     3.9   4.8      2.7      3.6    3.2   4.4
## 5 Finland 1988.333 1988 Finla     3.9   4.8      2.7      3.6    3.2   4.3
## 6 Finland 1988.417 1988 Finla     3.8   4.7      2.7      3.6    3.1   4.3
##   Under25_F Under25_M Under25
## 1      10.7      12.2    11.5
## 2      10.6      12.1    11.4
## 3      10.6      11.9    11.3
## 4      10.5      11.7    11.1
## 5      10.4      11.5    11.0
## 6      10.3      11.2    10.7
##       country     time year   cod Females Males Over25_F Over25_M Over25
## 10845  Turkey 2018.500 2018 Turke      NA    NA       NA       NA    9.4
## 10846  Turkey 2018.583 2018 Turke      NA    NA       NA       NA    9.5
## 10847  Turkey 2018.667 2018 Turke      NA    NA       NA       NA    9.6
## 10848  Turkey 2018.750 2018 Turke      NA    NA       NA       NA    9.7
## 10849  Turkey 2018.833 2018 Turke      NA    NA       NA       NA   10.1
## 10850  Turkey 2018.917 2018 Turke      NA    NA       NA       NA   10.7
##       Total Under25_F Under25_M Under25
## 10845  11.1        NA        NA    20.1
## 10846  11.3        NA        NA    20.7
## 10847  11.5        NA        NA    21.4
## 10848  11.6        NA        NA    21.9
## 10849  12.1        NA        NA    22.6
## 10850  12.7        NA        NA    23.1
## [1] 10850    13
## Classes 'tbl_df', 'tbl' and 'data.frame':    10850 obs. of  13 variables:
##  $ country  : chr  "Finland" "Finland" "Finland" "Finland" ...
##  $ time     : num  1988 1988 1988 1988 1988 ...
##  $ year     : num  1988 1988 1988 1988 1988 ...
##  $ cod      : Factor w/ 33 levels "Austr","Belgi",..: 9 9 9 9 9 9 9 9 9 9 ...
##  $ Females  : num  4.1 4 3.9 3.9 3.9 3.8 3.8 3.7 3.6 3.6 ...
##  $ Males    : num  5.4 5.1 4.9 4.8 4.8 4.7 4.5 4.3 4.2 4.1 ...
##  $ Over25_F : num  2.9 2.8 2.8 2.7 2.7 2.7 2.6 2.5 2.5 2.4 ...
##  $ Over25_M : num  4.2 3.9 3.7 3.6 3.6 3.6 3.4 3.2 3.1 3 ...
##  $ Over25   : num  3.6 3.4 3.2 3.2 3.2 3.1 3 2.9 2.8 2.7 ...
##  $ Total    : num  4.8 4.6 4.5 4.4 4.3 4.3 4.1 4 3.9 3.8 ...
##  $ Under25_F: num  10.7 10.6 10.6 10.5 10.4 10.3 10.2 10.1 10.1 9.9 ...
##  $ Under25_M: num  12.2 12.1 11.9 11.7 11.5 11.2 10.8 10.6 10.5 10.4 ...
##  $ Under25  : num  11.5 11.4 11.3 11.1 11 10.7 10.5 10.4 10.3 10.2 ...
##    country               time           year           cod      
##  Length:10850       Min.   :1983   Min.   :1983   Irela  : 435  
##  Class :character   1st Qu.:1998   1st Qu.:1997   Nethe  : 435  
##  Mode  :character   Median :2005   Median :2005   Swede  : 435  
##                     Mean   :2004   Mean   :2004   Denma  : 434  
##                     3rd Qu.:2012   3rd Qu.:2012   Franc  : 434  
##                     Max.   :2019   Max.   :2019   Italy  : 434  
##                                                   (Other):8243  
##     Females           Males           Over25_F         Over25_M     
##  Min.   : 1.300   Min.   : 1.100   Min.   : 0.900   Min.   : 0.800  
##  1st Qu.: 5.300   1st Qu.: 5.000   1st Qu.: 4.600   1st Qu.: 4.100  
##  Median : 7.600   Median : 6.900   Median : 6.600   Median : 5.700  
##  Mean   : 8.798   Mean   : 7.854   Mean   : 7.639   Mean   : 6.673  
##  3rd Qu.:10.900   3rd Qu.: 9.400   3rd Qu.: 9.700   3rd Qu.: 8.300  
##  Max.   :31.900   Max.   :26.000   Max.   :29.800   Max.   :23.600  
##  NA's   :168      NA's   :168      NA's   :604      NA's   :604     
##      Over25          Total          Under25_F       Under25_M    
##  Min.   : 1.00   Min.   : 1.300   Min.   : 2.70   Min.   : 2.60  
##  1st Qu.: 4.40   1st Qu.: 5.200   1st Qu.:10.50   1st Qu.:11.50  
##  Median : 6.10   Median : 7.400   Median :17.10   Median :16.80  
##  Mean   : 7.06   Mean   : 8.242   Mean   :18.74   Mean   :18.24  
##  3rd Qu.: 8.60   3rd Qu.:10.000   3rd Qu.:23.80   3rd Qu.:22.50  
##  Max.   :25.80   Max.   :27.800   Max.   :68.80   Max.   :57.80  
##  NA's   :436                      NA's   :619     NA's   :619    
##     Under25     
##  Min.   : 2.70  
##  1st Qu.:10.60  
##  Median :16.60  
##  Mean   :17.97  
##  3rd Qu.:22.60  
##  Max.   :60.30  
##  NA's   :13

 

Visualização de mapas

Criação da data frame world_map, com informação espacial de todos os países.

Uma vez que o R pode ter mais do que uma função map_data(), podemos indicar que pretendemos especificamente usar a da biblioteca ggplot2 ao inserir o nome da biblioteca, seguido por ::, do género ggplot2::map_data("world").

## [1] "long"      "lat"       "group"     "order"     "region"    "subregion"

Usando as colunas long e lat para os eixos, podemos criar um mapa do mundo agrupado por group (país).

 

Com a função map_data podemos também identificar o conjunto de países que pretendemos representar no mapa.


 

Dados Janeiro de 2019

Nesta análise pretendemos representar os dados do desemprego (tabela eurostat) apenas para Janeiro de 2019. Para isso usamos a coluna time que nos fornece informação do mês. Note-se que esta coluna é diferente de year que unicamente indica o ano de cada registo.

##  [1] "country"   "time"      "year"      "cod"       "Females"  
##  [6] "Males"     "Over25_F"  "Over25_M"  "Over25"    "Total"    
## [11] "Under25_F" "Under25_M" "Under25"
## # A tibble: 6 x 13
##   country  time  year cod   Females Males Over25_F Over25_M Over25 Total
##   <chr>   <dbl> <dbl> <fct>   <dbl> <dbl>    <dbl>    <dbl>  <dbl> <dbl>
## 1 Finland  2019  2019 Finla     6.4   6.9      5.1      5.5    5.3   6.6
## 2 Ireland  2019  2019 Irela     5.7   5.6      4.9      4.3    4.6   5.7
## 3 Nether…  2019  2019 Nethe     3.7   3.5      3.2      2.9    3     3.6
## 4 Sweden   2019  2019 Swede     6.1   6        4.7      4.5    4.6   6.1
## 5 Austria  2019  2019 Austr     4.6   5        4.2      4.6    4.4   4.8
## 6 Belgium  2019  2019 Belgi     5.3   6.2      4.8      5.6    5.2   5.8
## # … with 3 more variables: Under25_F <dbl>, Under25_M <dbl>, Under25 <dbl>
## [1] 30 13

Vamos agora juntar dados_2019 com world_map, para poder regresentar os dados da taxa de desemprego por país. Para isso é necessário garantir que a variável com indicação do país tem o mesmo nome em ambos os data.frames.

##  [1] "country"   "time"      "year"      "cod"       "Females"  
##  [6] "Males"     "Over25_F"  "Over25_M"  "Over25"    "Total"    
## [11] "Under25_F" "Under25_M" "Under25"
## [1] "long"      "lat"       "group"     "order"     "region"    "subregion"

Devemos ainda garantir que os nomes dos países estão escritos da mesma forma.

##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
## [12]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [23]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [1] 9
## [1] "Czechia"

Depois de garantida a coerência entre os nomes das variáveis e países podemos por fim ligar as duas tabelas de dados através da função left_join()e desenhar o mapa representativo do desemprego global em Janeiro de 2019 para cada país.

## # A tibble: 6 x 18
##   region  time  year cod   Females Males Over25_F Over25_M Over25 Total
##   <chr>  <dbl> <dbl> <fct>   <dbl> <dbl>    <dbl>    <dbl>  <dbl> <dbl>
## 1 Finla…  2019  2019 Finla     6.4   6.9      5.1      5.5    5.3   6.6
## 2 Finla…  2019  2019 Finla     6.4   6.9      5.1      5.5    5.3   6.6
## 3 Finla…  2019  2019 Finla     6.4   6.9      5.1      5.5    5.3   6.6
## 4 Finla…  2019  2019 Finla     6.4   6.9      5.1      5.5    5.3   6.6
## 5 Finla…  2019  2019 Finla     6.4   6.9      5.1      5.5    5.3   6.6
## 6 Finla…  2019  2019 Finla     6.4   6.9      5.1      5.5    5.3   6.6
## # … with 8 more variables: Under25_F <dbl>, Under25_M <dbl>,
## #   Under25 <dbl>, long <dbl>, lat <dbl>, group <dbl>, order <int>,
## #   subregion <chr>

 

Para alterar a palette de cores podemos usar diversas bibliotecas. Aqui usaremos as palettes da library(fields), implementadas através da função scale_fill_gradientn() da biblioteca ggplot2.


 

Visualização Espacial por Categoria

Continuando com os dados de Janeiro de 2019 (dados_2019), suponhamos que pretendemos representar a taxa de desemprego por categorias resultantes do cruzamento do sexo com o escalão etário.

##  [1] "region"    "time"      "year"      "cod"       "Females"  
##  [6] "Males"     "Over25_F"  "Over25_M"  "Over25"    "Total"    
## [11] "Under25_F" "Under25_M" "Under25"
## # A tibble: 6 x 6
##   region       time  year cod   category values
##   <chr>       <dbl> <dbl> <fct> <chr>     <dbl>
## 1 Finland      2019  2019 Finla Females     6.4
## 2 Ireland      2019  2019 Irela Females     5.7
## 3 Netherlands  2019  2019 Nethe Females     3.7
## 4 Sweden       2019  2019 Swede Females     6.1
## 5 Austria      2019  2019 Austr Females     4.6
## 6 Belgium      2019  2019 Belgi Females     5.3
## [1] Females   Males     Over25_F  Over25_M  Over25    Total     Under25_F
## [8] Under25_M Under25  
## 9 Levels: Females Males Over25 Over25_F Over25_M Total ... Under25_M
## [1] "Females"   "Males"     "Over25"    "Over25_F"  "Over25_M"  "Total"    
## [7] "Under25"   "Under25_F" "Under25_M"
##   Females     Males    Over25  Over25_F  Over25_M     Total   Under25 
##        30        30        30        30        30        30        30 
## Under25_F Under25_M 
##        30        30
## # A tibble: 6 x 11
##   region  time  year cod   category values  long   lat group order
##   <chr>  <dbl> <dbl> <fct> <fct>     <dbl> <dbl> <dbl> <dbl> <int>
## 1 Finla…  2019  2019 Finla Females     6.4  20.6  60.0     1     1
## 2 Finla…  2019  2019 Finla Females     6.4  20.6  60.0     1     2
## 3 Finla…  2019  2019 Finla Females     6.4  20.5  60.0     1     3
## 4 Finla…  2019  2019 Finla Females     6.4  20.5  60.0     1     4
## 5 Finla…  2019  2019 Finla Females     6.4  20.4  60.0     1     5
## 6 Finla…  2019  2019 Finla Females     6.4  20.4  60.0     1     6
## # … with 1 more variable: subregion <chr>


 

Visualização Espaço-Temporal

Pretende-se agora analisar a taxa de desemprego por país ao longo do ano de 2018.

## # A tibble: 6 x 13
##   country  time  year cod   Females Males Over25_F Over25_M Over25 Total
##   <chr>   <dbl> <dbl> <fct>   <dbl> <dbl>    <dbl>    <dbl>  <dbl> <dbl>
## 1 Finland 1988   1988 Finla     4.1   5.4      2.9      4.2    3.6   4.8
## 2 Finland 1988.  1988 Finla     4     5.1      2.8      3.9    3.4   4.6
## 3 Finland 1988.  1988 Finla     3.9   4.9      2.8      3.7    3.2   4.5
## 4 Finland 1988.  1988 Finla     3.9   4.8      2.7      3.6    3.2   4.4
## 5 Finland 1988.  1988 Finla     3.9   4.8      2.7      3.6    3.2   4.3
## 6 Finland 1988.  1988 Finla     3.8   4.7      2.7      3.6    3.1   4.3
## # … with 3 more variables: Under25_F <dbl>, Under25_M <dbl>, Under25 <dbl>
## # A tibble: 6 x 13
##   country  time  year cod   Females Males Over25_F Over25_M Over25 Total
##   <chr>   <dbl> <dbl> <fct>   <dbl> <dbl>    <dbl>    <dbl>  <dbl> <dbl>
## 1 Turkey  2018.  2018 Turke      NA    NA       NA       NA    9.4  11.1
## 2 Turkey  2019.  2018 Turke      NA    NA       NA       NA    9.5  11.3
## 3 Turkey  2019.  2018 Turke      NA    NA       NA       NA    9.6  11.5
## 4 Turkey  2019.  2018 Turke      NA    NA       NA       NA    9.7  11.6
## 5 Turkey  2019.  2018 Turke      NA    NA       NA       NA   10.1  12.1
## 6 Turkey  2019.  2018 Turke      NA    NA       NA       NA   10.7  12.7
## # … with 3 more variables: Under25_F <dbl>, Under25_M <dbl>, Under25 <dbl>

Paa tal vamos filtrar os valores correspondentes a todo o ano de 2018 (12 meses), usando os valores da coluna year.

## [1] 372  13
##  [1] "country"   "time"      "year"      "cod"       "Females"  
##  [6] "Males"     "Over25_F"  "Over25_M"  "Over25"    "Total"    
## [11] "Under25_F" "Under25_M" "Under25"
## Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez 
##  31  31  31  31  31  31  31  31  31  31  31  31


 

Dados Referenciados por Pontos

Incêndios florestais em Portugal em 2000

Os dados referentes aos incêndios florestais foram extraídos de uma base de dados do Instituto da Conservação da Natureza e das Florestas – site do ICNF.

Pode aceder à página do ICNF e fazer o download do conjunto de dados.

##  [1] "ID"                   "INE"                  "DISTRITO"            
##  [4] "CONCELHO"             "FREGUESIA"            "x"                   
##  [7] "y"                    "lat"                  "lon"                 
## [10] "Ano"                  "Data_inicio"          "Data_fim"            
## [13] "CAUSA"                "A_POV"                "A_MATOS"             
## [16] "Area_Total_Florestal" "A_PUB"                "A_PRIVADA"           
## [19] "REAC"
##       ID   INE DISTRITO CONCELHO   FREGUESIA         x        y
## 1 151436 11107   Aveiro Mealhada Vacari\x8da -8.404719 40.36434
## 2 151579 11102   Aveiro Mealhada Barcou\x8do -8.484393 40.30259
## 3 151580 11106   Aveiro Mealhada  Pampilhosa -8.429501 40.33872
## 4 151605 11106   Aveiro Mealhada  Pampilhosa -8.429501 40.33872
## 5 151644 11102   Aveiro Mealhada Barcou\x8do -8.484393 40.30259
## 6 151645 11102   Aveiro Mealhada Barcou\x8do -8.484393 40.30259
##            lat          lon  Ano             Data_inicio
## 1 40 21 51.616 -8 24 16.987 2000 2000-10-28 14:28:00.000
## 2 40 18 09.323 -8 29 03.813 2000 2000-06-26 21:29:00.000
## 3 40 20 19.392 -8 25 46.205 2000 2000-06-26 20:29:00.000
## 4 40 20 19.392 -8 25 46.205 2000 2000-06-30 15:03:00.000
## 5 40 18 09.323 -8 29 03.813 2000 2000-05-19 21:24:00.000
## 6 40 18 09.323 -8 29 03.813 2000 2000-05-31 18:23:00.000
##                  Data_fim CAUSA A_POV A_MATOS Area_Total_Florestal A_PUB
## 1 2000-10-28 16:25:00.000  <NA>  0.00    0.15                 0.15     0
## 2 2000-06-26 23:05:00.000  <NA>  0.00    0.12                 0.12     0
## 3 2000-06-26 21:05:00.000  <NA>  0.00    0.01                 0.01     0
## 4 2000-06-30 18:10:00.000  <NA>  0.20    0.00                 0.20     0
## 5 2000-05-19 22:30:00.000  <NA>  0.02    0.00                 0.02     0
## 6 2000-05-31 19:35:00.000  <NA>  0.40    0.00                 0.40     0
##   A_PRIVADA REAC
## 1      0.15    0
## 2      0.12    0
## 3      0.01    0
## 4      0.20    0
## 5      0.02    0
## 6      0.40    0
## [1] 34109    19
## 'data.frame':    34109 obs. of  19 variables:
##  $ ID                  : int  151436 151579 151580 151605 151644 151645 151646 151647 151648 151649 ...
##  $ INE                 : int  11107 11102 11106 11106 11102 11102 11105 11103 11105 11105 ...
##  $ DISTRITO            : Factor w/ 36 levels "\x83vora","\x83VORA",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ CONCELHO            : Factor w/ 535 levels "\x83vora","\x83VORA",..: 256 256 256 256 256 256 256 256 256 256 ...
##  $ FREGUESIA           : Factor w/ 6250 levels "\x83vora (Santo Ant\x8bo)",..: 5644 808 3770 3770 808 808 3121 1390 3121 3121 ...
##  $ x                   : num  -8.4 -8.48 -8.43 -8.43 -8.48 ...
##  $ y                   : num  40.4 40.3 40.3 40.3 40.3 ...
##  $ lat                 : Factor w/ 3969 levels "36 59 50.395",..: 1311 1249 1281 1281 1249 1249 1329 1290 1329 1329 ...
##  $ lon                 : Factor w/ 3968 levels "-6 13 07.255",..: 2528 2810 2610 2610 2810 2810 2665 2744 2665 2665 ...
##  $ Ano                 : int  2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 ...
##  $ Data_inicio         : Factor w/ 238558 levels "1980-01-30 19:55:00.000",..: 238427 218245 218239 218503 215782 215909 216202 216857 216994 217060 ...
##  $ Data_fim            : Factor w/ 193550 levels "1899-12-30 00:00:00.000",..: 193418 176518 176506 176770 174271 174397 174668 175297 175401 175448 ...
##  $ CAUSA               : Factor w/ 4 levels "Indeterminada",..: NA NA NA NA NA NA NA 1 NA NA ...
##  $ A_POV               : num  0 0 0 0.2 0.02 0.4 0 0.4 0 0 ...
##  $ A_MATOS             : num  0.15 0.12 0.01 0 0 0 0.01 0 0 0.01 ...
##  $ Area_Total_Florestal: num  0.15 0.12 0.01 0.2 0.02 0.4 0.01 0.4 0 0.01 ...
##  $ A_PUB               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ A_PRIVADA           : num  0.15 0.12 0.01 0.2 0.02 0.4 0.01 0.4 0 0.01 ...
##  $ REAC                : int  0 0 0 0 0 0 0 0 0 0 ...

Mapeamento através de ficheiro shapefile – RBase

Importação do shapefile de Portugal Continental e observação das localizações dos incêndios do ano de 2000 utilizando o RBase.

## Loading required package: sp
## rgdal: version: 1.4-4, (SVN revision 833)
##  Geospatial Data Abstraction Library extensions to R successfully loaded
##  Loaded GDAL runtime: GDAL 2.1.3, released 2017/20/01
##  Path to GDAL shared files: /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rgdal/gdal
##  GDAL binary built with GEOS: FALSE 
##  Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
##  Path to PROJ.4 shared files: /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rgdal/proj
##  Linking to sp version: 1.3-1
## OGR data source with driver: ESRI Shapefile 
## Source: "/Users/soraiapereira/Documents/Disco/curso R/portugal_contorno.shp", layer: "portugal_contorno"
## with 1 features
## It has 6 fields

Mapeamento dos incêndios através da biblioteca ggplot2

##        long      lat group order   region subregion
## 1 -7.406153 37.17944     1     1 Portugal      <NA>
## 2 -7.493603 37.16831     1     2 Portugal      <NA>
## 3 -7.834131 37.00571     1     3 Portugal      <NA>
## 4 -7.939697 37.00542     1     4 Portugal      <NA>
## 5 -8.136767 37.07705     1     5 Portugal      <NA>
## 6 -8.484326 37.10005     1     6 Portugal      <NA>
## 'data.frame':    186 obs. of  6 variables:
##  $ long     : num  -7.41 -7.49 -7.83 -7.94 -8.14 ...
##  $ lat      : num  37.2 37.2 37 37 37.1 ...
##  $ group    : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ order    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ region   : chr  "Portugal" "Portugal" "Portugal" "Portugal" ...
##  $ subregion: chr  NA NA NA NA ...


 

Localização e Correspondente Área Total Florestal

Se para cada ponto referente a um incêndio pretendermos ver a informação relativa à área total florestal, podemos fazê-lo usando o ggplot. Para isso devemos associar cada ponto à respetiva área total florestal (coluna Área.Total.Florestal dos dados fogos),

Como podemos ver no mapa, a maioria dos valores da variável de interesse está entre 0 e 500m2, mas apresenta valores extremos que podem ir até 4000 m2. A caixa de bigodes, ou boxplot, ajuda a compreender a distribuição desta variável.

Para uma análise mais clara da distribuição espacial, sugerimos uma tranformação logarítmica da variável de interesse.